<?php

/**
 * Un coleccion de elementos
 */
interface LiteCollection extends IteratorAggregate {
	
	/**
	 * 
	 * @param LiteCollection $colA
	 * @param LiteCollection $colB
	 * 
	 * @return LiteCollection
	 */
	static function union(LiteCollection $colA, LiteCollection $colB);
	
	/**
	 * Elimina todos los elementos de la coleccion
	 */
	function clear();
	
	/**
	 * Agrega un elemento a la coleccion
	 * 
	 * @param mixed $element
	 */
	function add($element);
	
	/**
	 * Agrega todos los elementos de otra coleccion
	 * 
	 * @param mixed $element
	 */
	function addAll(LiteCollection $col);
	
	/**
	 * Retorna verdadero si la coleccion contiene a <code>$element</code>
	 * 
	 * @param mixed $element
	 * @return mixed
	 */
	function contains($element);
	
	/**
	 * Retorna verdadero si la coleccion <code>$col</code> esta incluida
	 * en la colecion
	 * 
	 * @param mixed $element
	 * @return mixed
	 */
	function containsAll(LiteCollection $col);
	
	/**
	 * Elimina un elemento de la coleccion
	 *  
	 * @param mixed $element
	 */
	function remove($element);
		
	/**
	 * Retorna verdadero si la coleccion esta vacia
	 * 
	 * @return boolean
	 */
	function isEmpty();
	
	/**
	 * Retorna la cantidad de elementos de la colecion
	 * 
	 * @return int
	 */
	function size();
	
	/**
	 * Retorna un array con los elementos
	 * 
	 * @return array
	 */
	function toArray();
}